package com.fx.ruankao.service;

import com.fx.ruankao.entity.UserAnswer;
import java.util.List;

/**
 * 用户答案服务接口
 */
public interface UserAnswerService {
    
    /**
     * 新增用户答案
     * @param userAnswer 用户答案实体
     * @return 受影响的行数
     */
    int insert(UserAnswer userAnswer);
    
    /**
     * 根据ID删除用户答案
     * @param id 答案ID
     * @return 受影响的行数
     */
    int deleteById(Integer id);
    
    /**
     * 更新用户答案
     * @param userAnswer 用户答案实体
     * @return 受影响的行数
     */
    int update(UserAnswer userAnswer);
    
    /**
     * 根据ID查询用户答案
     * @param id 答案ID
     * @return 用户答案实体
     */
    UserAnswer selectById(Integer id);
    
    /**
     * 根据考试记录ID查询用户答案列表
     * @param recordId 考试记录ID
     * @return 用户答案列表
     */
    List<UserAnswer> selectByRecordId(Integer recordId);
    
    /**
     * 批量插入用户答案
     * @param userAnswers 用户答案列表
     * @return 受影响的行数
     */
    int batchInsert(List<UserAnswer> userAnswers);
    
    /**
     * 根据考试记录ID删除用户答案
     * @param recordId 考试记录ID
     * @return 受影响的行数
     */
    int deleteByRecordId(Integer recordId);
    
    /**
     * 查询指定用户在指定试卷中的答案
     * @param userId 用户ID
     * @param paperId 试卷ID
     * @return 用户答案列表
     */
    List<UserAnswer> selectByUserIdAndPaperId(Integer userId, Integer paperId);
    
    /**
     * 计算用户在指定考试中的得分
     * @param recordId 考试记录ID
     * @return 得分
     */
    Integer calculateScore(Integer recordId);
    
    /**
     * 查询用户答案数量
     * @return 用户答案数量
     */
    int countAnswers();
    
    /**
     * 根据试卷ID统计用户答案数量
     * @param paperId 试卷ID
     * @return 用户答案数量
     */
    int countAnswersByPaperId(Integer paperId);
}